% fname: routing_oddeven__sel_bufferlevel__topology_8x8__.m
% ./noxim -routing oddeven -sel bufferlevel -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -traffic transpose1 -buffer 4 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_bufferlevel__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        25.8127      0.0647949            403           4148          33175
            0.008        25.2502      0.0638828            413           4088          32708
            0.008        26.4185      0.0643965            388           4122          32971
            0.008        25.9778      0.0634258            322           4059          32474
            0.008        28.4482      0.0645625            845           4132          33056
            0.008        24.8266      0.0642344            532           4113          32888
            0.008        25.5787       0.064375            469           4121          32960
            0.008        31.4064      0.0640566           1386           4097          32797
            0.008        25.5165      0.0648457            407           4153          33201
            0.008        24.2754      0.0639473            652           4092          32741
            0.008        29.2593       0.064502            848           4126          33025
            0.008        26.1205       0.063834            763           4084          32683
            0.008        29.4789      0.0651035            798           4166          33333
            0.008        26.3276       0.063334            309           4054          32427
            0.008        26.7087      0.0631582            900           4040          32337
            0.008        26.2948      0.0645586            859           4132          33054
            0.008        23.7552      0.0629121            353           4028          32211
            0.008        26.2035      0.0645898            308           4132          33070
            0.008        27.4428      0.0642754            937           4115          32909
            0.008        26.5607      0.0648789            666           4152          33218
           0.0088        30.8965      0.0708613            750           4539          36281
           0.0088        26.0804      0.0712891            415           4563          36500
           0.0088        33.0933       0.069832            767           4468          35754
           0.0088        29.6527      0.0701934            469           4495          35939
           0.0088        37.8469      0.0699199           1318           4475          35799
           0.0088        27.2594      0.0694609            460           4448          35564
           0.0088        34.6791      0.0725566           1276           4643          37149
           0.0088        27.6352      0.0694141            588           4444          35540
           0.0088        29.9899      0.0711055            483           4550          36406
           0.0088        31.9678      0.0717773            816           4593          36750
           0.0088        31.6462      0.0694258            896           4446          35546
           0.0088        29.1786       0.069623            478           4456          35647
           0.0088        33.2611      0.0736953            822           4718          37732
           0.0088        33.1543       0.070125            726           4490          35904
           0.0088        34.1039      0.0702383            917           4494          35962
           0.0088        31.4182      0.0687832            862           4405          35217
           0.0088        31.9332      0.0716133            699           4583          36666
           0.0088        29.7595      0.0695313            508           4453          35600
           0.0088        36.3535       0.072752           1148           4656          37249
           0.0088        33.1039      0.0705898           1204           4516          36142
           0.0096        55.9978       0.077168           2562           4937          39510
           0.0096        36.5818      0.0772637            702           4943          39559
           0.0096        33.1435      0.0768477            904           4920          39346
           0.0096        55.5718      0.0773281           3335           4951          39592
           0.0096        40.1402      0.0774688           1012           4957          39664
           0.0096        39.3689      0.0771641           1132           4939          39508
           0.0096        35.4141      0.0783281            691           5013          40104
           0.0096        36.5193      0.0748047           1082           4787          38300
           0.0096        50.6944      0.0774941           1797           4964          39677
           0.0096        32.4192      0.0758398            660           4852          38830
           0.0096        39.6498      0.0758008           1246           4851          38810
           0.0096        36.0572      0.0768594           1075           4916          39352
           0.0096        38.2051      0.0762383            596           4881          39034
           0.0096        42.3152      0.0779551           1197           4987          39913
           0.0096        37.1521      0.0778223            998           4978          39845
           0.0096        35.2531       0.076873            480           4919          39359
           0.0096        42.1551      0.0776016           1309           4963          39732
           0.0096        35.6513       0.077125            715           4935          39488
           0.0096        42.3067      0.0781465           1339           5005          40011
           0.0096        45.0365      0.0787773           1259           5039          40334
           0.0104          55.53      0.0828281           2353           5300          42408
           0.0104        51.6353      0.0849844           1480           5435          43512
           0.0104        43.9562      0.0844824           2275           5410          43255
           0.0104        40.2576      0.0842305            764           5392          43126
           0.0104        52.4841      0.0839531           1667           5377          42984
           0.0104         55.519      0.0828945           1378           5304          42442
           0.0104        42.5967       0.084375            709           5400          43200
           0.0104        51.3809      0.0836895           1939           5356          42849
           0.0104        40.4061      0.0818281           1175           5242          41896
           0.0104        51.4569      0.0854297           1553           5470          43740
           0.0104        40.3229      0.0817734           1039           5234          41868
           0.0104        51.6773      0.0841816           1222           5389          43101
           0.0104        42.5015      0.0815391           1126           5216          41748
           0.0104        44.9476      0.0831602           1743           5323          42578
           0.0104        47.0011      0.0844023           1228           5397          43214
           0.0104        44.9745      0.0846621            767           5420          43347
           0.0104        40.6412      0.0830039            793           5310          42498
           0.0104        43.0183      0.0812988           1055           5205          41625
           0.0104        43.9265      0.0835801            755           5346          42793
           0.0104        39.7797      0.0812715           1022           5201          41611
           0.0112        71.5741      0.0874551           3989           5595          44777
           0.0112        51.4618      0.0899414           1769           5753          46050
           0.0112        58.8677      0.0890762           1331           5700          45607
           0.0112        60.7813      0.0909961           1135           5826          46590
           0.0112        74.7568      0.0894512           3544           5727          45799
           0.0112        53.9132      0.0878457           2247           5622          44977
           0.0112        77.2002      0.0884023           3720           5658          45262
           0.0112        77.1972      0.0883828           2839           5655          45252
           0.0112        55.0062      0.0879863           1219           5630          45049
           0.0112        60.1922      0.0871406           1651           5578          44616
           0.0112        54.5719      0.0895723           1385           5732          45861
           0.0112        52.8132      0.0908652           1000           5815          46523
           0.0112        57.4214      0.0904258           1025           5790          46298
           0.0112        45.1732      0.0893906            731           5722          45768
           0.0112        55.3822      0.0901973           1186           5777          46181
           0.0112        62.7345      0.0902402           1918           5775          46203
           0.0112        48.8266      0.0884844           1061           5663          45304
           0.0112        50.6837       0.088252           1023           5649          45185
           0.0112        57.1013      0.0894141           1565           5724          45780
           0.0112        69.9875      0.0898965           2397           5756          46027
            0.012        74.5302      0.0954082           2029           6109          48849
            0.012        96.5967      0.0954258           2777           6105          48858
            0.012          78.95      0.0962598           1558           6161          49285
            0.012        76.9752      0.0946289           3970           6059          48450
            0.012        84.1775      0.0973691           1669           6235          49853
            0.012        77.5263       0.094873           2965           6074          48575
            0.012        67.4039      0.0961641           1044           6155          49236
            0.012        74.5316      0.0941621           1605           6025          48211
            0.012         106.92      0.0945332           3250           6049          48401
            0.012        76.3332      0.0934766           2000           5982          47860
            0.012        61.2587      0.0952422           1206           6093          48764
            0.012        65.6061       0.094541           2345           6052          48405
            0.012        103.854      0.0971094           2146           6213          49720
            0.012        96.1888      0.0967676           2148           6192          49545
            0.012        84.7129       0.096377           2276           6169          49345
            0.012        101.028       0.096998           3030           6208          49663
            0.012        93.5343      0.0952246           3158           6096          48755
            0.012        65.5507      0.0953125           1335           6103          48800
            0.012        60.6808      0.0951934           1446           6094          48739
            0.012        67.6029      0.0970332           1395           6212          49681
           0.0128        106.954       0.100531           1928           6434          51472
           0.0128        104.918       0.100707           1762           6446          51562
           0.0128        130.255       0.101553           2217           6501          51995
           0.0128        104.619       0.101291           2459           6482          51861
           0.0128        133.322       0.100592           2526           6435          51503
           0.0128         114.54        0.10309           2541           6596          52782
           0.0128        82.1694       0.101613           1692           6505          52026
           0.0128        96.0234       0.102273           1626           6545          52364
           0.0128        119.773       0.100742           3764           6446          51580
           0.0128        114.237       0.103398           1962           6620          52940
           0.0128        115.426       0.103279           4450           6609          52879
           0.0128        109.013      0.0996816           3171           6381          51037
           0.0128        96.0144       0.102186           1859           6544          52319
           0.0128        70.0892       0.100895           1343           6457          51658
           0.0128        107.422       0.101807           2835           6514          52125
           0.0128        94.3581       0.102188           2645           6543          52320
           0.0128        123.608       0.101607           2484           6503          52023
           0.0128        94.6926      0.0999805           3387           6398          51190
           0.0128         144.62       0.102355           2608           6550          52406
           0.0128        109.994       0.100936           2817           6461          51679
           0.0136        197.053       0.107777           3465           6900          55182
           0.0136        183.217       0.110787           2992           7090          56723
           0.0136        122.981       0.106889           3534           6840          54727
           0.0136        158.415       0.107305           3235           6870          54940
           0.0136        150.039       0.110668           4552           7081          56662
           0.0136        141.025       0.106578           3852           6814          54568
           0.0136        151.717       0.107463           4566           6876          55021
           0.0136        161.776       0.108381           3161           6935          55491
           0.0136        166.417       0.105176           2532           6729          53850
           0.0136        165.808       0.107055           3705           6853          54812
           0.0136        141.231       0.107113           2504           6856          54842
           0.0136        170.678       0.106672           3166           6829          54616
           0.0136         123.96       0.105275           2084           6736          53901
           0.0136        174.897        0.10375           4353           6640          53120
           0.0136        148.777       0.107572           5295           6887          55077
           0.0136        141.368        0.10466           3526           6695          53586
           0.0136        128.723       0.105883           3281           6779          54212
           0.0136        167.218       0.108021           3339           6912          55307
           0.0136        120.679        0.11015           2175           7049          56397
           0.0136        132.176       0.105961           3113           6788          54252
           0.0144        175.794        0.11332           4239           7253          58020
           0.0144        221.168        0.11167           5489           7150          57175
           0.0144        201.326       0.111645           4871           7145          57162
           0.0144         251.49       0.111215           6112           7118          56942
           0.0144        188.877        0.11318           4450           7239          57948
           0.0144        187.956       0.111273           3670           7123          56972
           0.0144        211.575        0.11141           6091           7128          57042
           0.0144        203.445       0.110961           5006           7099          56812
           0.0144        148.414       0.112604           4168           7207          57653
           0.0144        197.612       0.112381           5044           7192          57539
           0.0144         149.59       0.111184           3989           7113          56926
           0.0144        166.956       0.112301           4365           7187          57498
           0.0144        255.482       0.109896           4950           7037          56267
           0.0144        184.128       0.110289           4981           7059          56468
           0.0144        136.313       0.112316           3596           7181          57506
           0.0144        204.272       0.111551           4455           7139          57114
           0.0144        175.849       0.111027           4191           7110          56846
           0.0144        185.325       0.112289           4654           7185          57492
           0.0144        236.696       0.112586           5717           7203          57644
           0.0144        199.705       0.112326           3520           7190          57511
           0.0152        231.514       0.116234           5177           7442          59512
           0.0152        310.591       0.116205           5503           7438          59497
           0.0152        301.889       0.119406           6869           7640          61136
           0.0152        269.656       0.116814           5866           7480          59809
           0.0152        261.075       0.116029           5441           7425          59407
           0.0152        240.801       0.116629           5848           7462          59714
           0.0152        224.733       0.116615           6417           7460          59707
           0.0152        243.359       0.117082           5357           7491          59946
           0.0152        187.108       0.116785           5939           7476          59794
           0.0152        205.891       0.117318           5654           7510          60067
           0.0152        322.747       0.116654           6974           7467          59727
           0.0152         307.12       0.115898           6574           7417          59340
           0.0152         269.16       0.117514           6655           7522          60167
           0.0152        283.973       0.115541           4804           7395          59157
           0.0152         216.92       0.115883           6764           7417          59332
           0.0152        253.476        0.11509           5899           7369          58926
           0.0152        242.981       0.117799           5647           7536          60313
           0.0152        234.822       0.117361           5910           7512          60089
           0.0152        232.533       0.115992           6935           7427          59388
           0.0152        253.502       0.117369           7355           7513          60093
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
